package org.ricks.net.balancer;

import org.ricks.net.action.context.session.Session;

/**
 * 制定获取session规则
 */
public interface IConsumerLoadBalancer {

    /**
     * 只有一致性hash会使用这个argument参数，如果在一致性hash没有传入argument默认使用随机负载均衡
     *
     * @param argument 计算参数
     * @return 一个服务提供者的session
     */
    Session loadBalancer(short cmd, Object argument);

    default void beforeLoadBalancer(Session session, Object packet) {
    }

    default void afterLoadBalancer(Session session, Object packet) {
    }
}
